package cn.biplam.common.paramters;

import cn.biplam.common.tools.TOOLS;
import cn.biplam.common.wrapper.KvMap;

/**
 * 树参数名提供者
 * @author WangSong 2009-10-16下午07:12:17
 * @version 1.0
 */
public class TreeParam {
	/**树右键提供的参数*/
	/** 表名参数名(新树参数,TreeDcIndex用的表名,树模版提供)*/
	public static final String TABLE_NAME=".tableName";
	/** 添加额外operatorId参数名(新树参数,需要设置)*/
	public static final String OPERATORID_ADD=".operatorIdAdd";
	/** 修改额外operatorId参数名(新树参数,需要设置)*/
	public static final String OPERATORID_MODIFY=".operatorIdModify";
	/** 删除额外operatorId参数名(新树参数,需要设置)*/
	public static final String OPERATORID_DELETE=".operatorIdDelete";
	/** 节点类型参数名(树模版提供)*/
	public static final String NODE_TYPE=".node_type";
	/** 调用树的容器id(树模版提供)*/
	public static final String TREE_PCID=".pcid";
	/** 树VC的行为id(树模版提供)*/
	public static final String TREE_AID=".aid";
	/** 树索引(树模版提供)*/
	public static final String TREE_INDEX = ".treeIndex";
	/** 树节点容器ID(树模版提供)*/
	public static final String NODE_CONTARINER_ID = ".nodeCId";
	/** 树节点ID(树模版提供)*/
	public static final String NODE_ID = ".nodeId";
	/** 树节点名称(树模版提供)*/
	public static final String NODE_NAME = ".nodeName";
	/** 树节点真实id(树模版提供)*/
	public static final String NODE_REAL_ID = ".nodeRealId";
	/** 树节点级别(树模版提供)*/
	public static final String NODE_LEVEL = ".nodeLevel";
	/** 取树节点名字的参数名(树模版提供)*/
	public static final String NODE_TEXT_OPEERATORID = ".textOperatorId";
	
	/**自定义应用参数(用户画页面时表单自定义参数名)*/
	/** 树节点操作类型*/
	public static final String OPERATOR_TYPE=".operator_type";
	/** 节点名字参数名*/
	public static final String NAME = ".name";
	/** 节点描述参数名*/
	public static final String DESC = ".desc";
	/** 索引树的数据过滤operatorId参数名*/
	public static final String TreeIndexFilterOperatorId = ".filterOperatorId";
	
	/**
	 * 节点类型 
	 */
	public enum Index_Tree_Node_Type{
		/** 根主题 */
		ROOT_THEME("1"),
		/** 非根主题 */
		UN_ROOT_THEME("2"),
		/** 叶子节点 */
		OTHER("3"),
		/**自定义*/
		CUSTOM("4");
		
		private String value;
		private Index_Tree_Node_Type(String value){this.value=value;}
		public String toString() {return value;}
	}
	
	/**
	 * 是否有哥哥标示
	 */
	public enum Have_Brother{
		/** 是(有哥哥)*/
		True("1"),
		/** 否 */
		False("0");
		private String value;
		private Have_Brother(String value){this.value=value;}
		public String toString() {return value;}
	}
	
	/**
	 * 是否有弟弟标示
	 */
	public enum Have_L_Brother{
		/** 是(有弟弟)*/
		True("1"),
		/** 否 */
		False("0");
		private String value;
		private Have_L_Brother(String value){this.value=value;}
		public String toString() {return value;}
	}
	
	/**
	 * 节点是否为根节点
	 */
	public enum Is_Root{
		/** 是*/
		True("0"),
		/** 否 */
		False("1");
		private String value;
		private Is_Root(String value){this.value=value;}
		public String toString() {return value;}
	}
	
	/**
	 * 节点是否为树叶子(即是否有下级) 
	 */
	public enum Is_Leaf{
		/** 是叶子节点(没有下级)*/
		True("0"),
		/** 非叶子节点(有下级)*/
		False("1");
		private String value;
		private Is_Leaf(String value){this.value=value;}
		public String toString() {return value;}
	}
	
	/**
	 * 取树的checkbox的key值
	 * @param pcid 调用树的容器id
	 * @param treeAction 树Vc的actionId
	 * @return checkbox的key值
	 */
	public static String getCheckBoxId(String pcid,String treeAction){
		if(!TOOLS.StringIsEmpty(pcid)){
			pcid = TOOLS.stringClip(pcid, 4);
		}
		return pcid+treeAction+"ckbvalue";
	}
	
	/**
	 *  获取树被选择的节点列表<BR>用于:树的节点类型为CheckBox时,选择完后获取选择节点的节点ID列表
	 * @param treeParams  树参数容器
	 * @param pcid        调用树的容器id
	 * @param treeAction  树Vc的actionId
	 * @return checkbox的key值列表
	 */
	public static String[] getTreeSelectList(KvMap<String, String> treeParams,
			String pcid,String treeAction){
		String values = treeParams.getByKey(
				getCheckBoxId(pcid, treeAction)//获取被选择树节点ID列表
				);
		//将字符串ID分割成列表
		String [] list = null;
		if(!TOOLS.StringIsEmpty(values)){
			list = values.split("#");
		}
		return list;
	}
	
	public enum DataType{
		Str,
		Num;
	}
}
